package com.bwda.dsrs.systemservice.utils;

import com.bwda.dsrs.base.util.CopyUtil;
import com.bwda.dsrs.systemservice.domain.Constants;
import com.bwda.dsrs.systemservice.domain.exception.SystemServiceException;
import com.bwda.dsrs.systemservice.domain.form.org.OrgCreateForm;
import com.bwda.dsrs.systemservice.domain.po.user.UserPo;
import com.bwda.dsrs.systemservice.domain.vo.user.UserVo;
import com.bwda.dsrs.systemservice.service.OrgService;
import com.bwda.dsrs.systemservice.service.RoleService;
import com.bwda.dsrs.systemservice.service.UserService;
import com.bwda.dsrs.systemservice.util.util.JwtTokenUtil;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
//import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 获取登录用户信息工具类
 * @author yanyuemei
 */
public class UserUtils {
//
//    private final Logger logger= LoggerFactory.getLogger(UserUtils.class);
//    @Autowired
//    private UserService userService;
//    @Autowired
//    private RoleService roleService;
//    @Autowired
//    private OrgService orgService;
//
//    @Autowired
//    private RedisTemplate redisTemplate;
//
//    @Value("${user_token_expires}")
//    private long expireTime;
//
//    @Value("${user_token_prefix_log}")
//    private String userTokenPrefixLog;
//    /**
//     *  获取登录用户信息
//     *
//     * @return 登录用户信息
//     */
//    public Map<String,Object> getUser(HttpServletRequest request) {
//
//        String auth = request.getHeader(Constants.TOKEN_HEADER);
//        String userCode = JwtTokenUtil.getUserCode(auth);
//
//        // 从Redis缓存里获取用户信息
//        Map<String,Object> authMap = null;
//        Object userInfo = redisTemplate.opsForValue().get(
//                userTokenPrefixLog + userCode);
//        if (userInfo != null){
//            authMap = (Map<String,Object>)userInfo;
//        }
//        if(authMap==null||authMap.size()==0){
//            authMap = new HashMap<String,Object>(16);
//            try {
//                //获取用户详细信息
//                UserPo userPo = userService.queryUserByUserCode(userCode);
//                UserVo userVo = CopyUtil.transfer(userPo,UserVo.class);
//                if(userVo !=null ){
//                    userVo.setPassword(null);
//                    authMap.put("userinfo",userVo);
//                }
//                OrgCreateForm orgCreateForm = orgService.queryOrg(userCode);
//                if(orgCreateForm !=null){
//                    authMap.put("org",orgCreateForm);
//                }
//            }catch (SystemServiceException e){
//                logger.error("获取用户信息异常："+ e.getMessage());
//            }
//            redisTemplate.opsForValue().set(userTokenPrefixLog + userCode,authMap);
//            redisTemplate.expire(userTokenPrefixLog + userCode,expireTime, TimeUnit.SECONDS);
//        }
//        return authMap;
//    }

}
